package study.kit.regex;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

@Slf4j
public class NameUtil {

    private static String RE_SEQ = "[1-9]{1,}";

    private static String RE_SUFFIX = StrUtil.format("(\\({}\\)$)?", RE_SEQ);

    /**
     * 生成名字
     *
     * @param baseName
     * @param similarNameLt
     */
    public static String makeName(String baseName, List<String> similarNameLt) {
        // 名称正则
        String regex = StrUtil.concat(true, baseName, RE_SUFFIX);
        // 提取数字
        List<Integer> seqLt = ListUtil.toLinkedList();
        for (String name : similarNameLt) {
            if (ReUtil.isMatch(regex, name)) {
                String seq = ReUtil.get(RE_SEQ, name, 0);
                seqLt.add(NumberUtil.parseInt(seq));
            }
        }
        //
        if (CollectionUtil.isNotEmpty(seqLt)) {
            Integer max = CollectionUtil.max(seqLt);
            baseName = StrUtil.format("{}({})", baseName, max + 1);
        }
        return baseName;
    }

}
